Many computerized applications depend upon subroutines, also called nodes herein, which perform substantially identical functions. For example, a first node may receive input from a first text input box, and store it as a first named variable. A second node may also receive input from a second text input box, and store it as a second named variable. Both of these two nodes may provide exactly the same function in regard to the text input box which it serves. However, it is typically very important that the input and output of the two nodes not be confused, because such confusion between the two nodes would tend to save one or both of the two variables with an incorrect variable name.
This problem is especially prevalent in graphical programming languages, where various elements, such as the input boxes described above, can be repeatedly pulled off of a menu and dragged onto a form to create a new application, where each of the input boxes serves a different purpose and is associated with a different named variable. Confusion as to which node was to service which text box would be fatal to the proper operation of the resultant application.
With the advent of web applications, such as those developed in XML, such graphical programming, or programs that are developed on the fly based on the input provided by a user, of hierarchically written structured text is becoming more prevalent. Thus, the need to distinguish between nodes that are virtually identical one to another is continually increasing.
One method of ensuring that a given node is distinguished from all other nodes with similar functions is to provide a unique name for every single node in the program. Thus, a given element of the program user interface that is associated with the node, or some other element of the program that desires to access the node, does so by invoking the unique name of the node. Unfortunately, modern programs may make use of many, many such duplicated nodes, and uniquely naming each such node can produce a variety of other problems.
What is needed, therefore, is a system for determining the desired one of several nodes which all provide similar functionality and which may all have the same name.